// 浏览器扩展内容脚本
// 用于通知background script页面加载信息

// 页面加载完成后通知background script
window.addEventListener('load', () => {
  // 首先检查数据收集是否启用
  chrome.storage.sync.get(['collectEnabled'], function(result) {
    const isEnabled = result.collectEnabled || false;
    
    // 如果数据收集被禁用，则不发送数据
    if (!isEnabled) {
      console.log('数据收集已禁用，不收集当前页面数据');
      return;
    }
    
    // 收集页面数据并发送到background script
    const pageData = {
      url: window.location.href,
      title: document.title,
      visitTime: new Date().toISOString(),
      domain: window.location.hostname,
      path: window.location.pathname
    };

    // 发送数据到background script
    chrome.runtime.sendMessage({
      action: "addBrowsingData",
      data: pageData
    }, (response) => {
      if (chrome.runtime.lastError) {
        console.log("无法连接到background script，这在某些页面上是正常的");
        return;
      }
      
      if (response && response.status === "success") {
        console.log('页面数据已发送到background script');
      }
    });
    
    console.log('个人导航助手内容脚本已加载并发送数据');
  });
});

class BrowsingDataCollector {
  constructor() {
    this.serverUrl = 'http://localhost:8080'; // 导航服务地址
    this.visitData = [];
    this.init();
  }

  init() {
    // 监听页面加载完成事件
    window.addEventListener('load', () => {
      this.collectPageData();
    });

    // 监听来自popup的消息
    chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
      if (request.action === "syncData") {
        this.sendDataToServer().then(() => {
          sendResponse({status: "success"});
        }).catch((error) => {
          console.error("数据同步错误:", error);
          sendResponse({status: "error", message: error.message});
        });
        return true; // 保持消息通道开放以进行异步响应
      }
      // 处理导出浏览历史的请求
      else if (request.action === "exportHistory") {
        try {
          const historyData = this.getHistoryData();
          sendResponse({data: historyData});
        } catch (error) {
          console.error("导出浏览历史错误:", error);
          sendResponse({data: null, error: error.message});
        }
        return true;
      }
    });

    // 定期发送数据到服务器
    setInterval(() => {
      this.sendDataToServer();
    }, 30000); // 每30秒发送一次
    
    console.log("个人导航助手内容脚本已加载");
  }

  collectPageData() {
    const pageData = {
      url: window.location.href,
      title: document.title,
      visitTime: new Date().toISOString(),
      domain: window.location.hostname,
      path: window.location.pathname
    };

    // 存储到本地
    this.visitData.push(pageData);
    
    // 保留最近100条记录
    if (this.visitData.length > 100) {
      this.visitData.shift();
    }

    console.log('收集页面数据:', pageData);
  }

  // 获取浏览历史数据（用于导出）
  getHistoryData() {
    // 格式化数据以匹配要求的字段
    return this.visitData.map(item => ({
      url: item.url,
      title: item.title,
      visitTime: item.visitTime,
      domain: item.domain,
      path: item.path
    }));
  }

  async sendDataToServer() {
    if (this.visitData.length === 0) return;

    try {
      const response = await fetch(`${this.serverUrl}/api/browsing-history`, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          visits: this.visitData
        })
      });

      if (response.ok) {
        console.log('浏览数据发送成功');
        // 清空已发送的数据
        this.visitData = [];
        return true;
      } else {
        console.error('发送浏览数据失败:', response.status);
        return false;
      }
    } catch (error) {
      console.error('发送浏览数据时出错:', error);
      return false;
    }
  }
}

// 初始化数据收集器
new BrowsingDataCollector();